package com.boolib.shopadmin.config.shiro.commons;

import com.boolib.pojo.SysUser;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.SessionDAO;
import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.subject.support.DefaultSubjectContext;
import org.springframework.beans.factory.annotation.Autowired;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;


@Slf4j
public class ShiroUtils {



    public static SysUser getUser(){
        Subject subject = SecurityUtils.getSubject();

        SysUser user = null;


        Object obj = subject.getPrincipal();

        if(obj!=null){

            user = new SysUser();

            try {
                BeanUtils.copyProperties(user,obj);

                return user;

            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }

        return  null;

    }


    //public static List<OnLineUser> OnlineUser( Collection<Session> sessions ){

//
//        ArrayList<OnLineUser> onLineUsers = new ArrayList<>();
//
//        for (Session session : sessions) {
//
//            SimplePrincipalCollection simplePrincipalCollection = (SimplePrincipalCollection) session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
//
//            User user = (User) simplePrincipalCollection.iterator().next();
//
//            OnLineUser onLineUser = new OnLineUser();
//
//            try {
//                BeanUtils.copyProperties(onLineUser,user);
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            } catch (InvocationTargetException e) {
//                e.printStackTrace();
//            }
//
//
//            onLineUser.setDate(session.getStartTimestamp());
//
//
//            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//            try {
//                onLineUser.setLastDate( simpleDateFormat.parse(simpleDateFormat.format(session.getLastAccessTime())));
//            } catch (ParseException e) {
//                e.printStackTrace();
//            }
//
//            onLineUsers.add(onLineUser);
//        }
//
//
//        return onLineUsers;
//    }



//    public static boolean mandatory(Collection<Session> sessions,String username){
//
//        for (Session s : sessions) {
//
//
//            SimplePrincipalCollection simplePrincipalCollection = (SimplePrincipalCollection) s.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
//
//           User user =  (User)simplePrincipalCollection.iterator().next();
//
//            if(user.getUsername().equals(username)){
//                s.setTimeout(0);
//                return  true;
//            }
//        }
//        try {
//            throw new Exception("没有找到");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return false;
//    }

}
